fix signature of this function and propagate errors from
authorMichael Natterer <mitch@imendio.com>
Wed, 16 Jan 2008 14:35:46 +0000 (14:35 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Wed, 16 Jan 2008 14:35:46 +0000 (14:35 +0000)
2008-01-16  Michael Natterer  <mitch@imendio.com>

* gdk-pixbuf-io.c (save_to_stream): fix signature of this function
and propagate errors from g_output_stream_write(). Return error
also on incomplete writes (which don't generate an error by
themselves).

Unrelated:

(gdk_pixbuf_io_init): initialize "builtin_module" on a separate
line to avoid compiler warning in the common case of no built-in
modules.

svn path=/trunk/; revision=19378

gdk-pixbuf/ChangeLog
gdk-pixbuf/gdk-pixbuf-io.c

index 7ba2990744a414a255341e8b33b7ef94524e7918..1670d22e18247e240e333a4a9bb8e8d9c908bf2d 100644 (file)
@@ -1,3 +1,16 @@
+2008-01-16  Michael Natterer  <mitch@imendio.com>
+
+       * gdk-pixbuf-io.c (save_to_stream): fix signature of this function
+       and propagate errors from g_output_stream_write(). Return error
+       also on incomplete writes (which don't generate an error by
+       themselves).
+
+       Unrelated:
+
+       (gdk_pixbuf_io_init): initialize "builtin_module" on a separate
+       line to avoid compiler warning in the common case of no built-in
+       modules.
+
 2008-01-16  Michael Natterer  <mitch@imendio.com>
 
        * Makefile.am (LDADDS): use $GDK_PIXBUF_DEP_LIBS instead of
index 61b7991db75182268b4bb0871c7efd8ec531bf74..7c3ed83b824398d540a1aa0291cefd6a37da0845 100644 (file)
@@ -306,7 +306,12 @@ gdk_pixbuf_io_init (void)
        GdkPixbufModulePattern *pattern;
        GError *error = NULL;
 #endif
-       GdkPixbufModule *builtin_module = NULL;
+       GdkPixbufModule *builtin_module ;
+
+        /*  initialize on separate line to avoid compiler warnings in the
+         *  common case of no compiled-in modules.
+         */
+       builtin_module = NULL;
 
 #define load_one_builtin_module(format)                                        \
        builtin_module = g_new0 (GdkPixbufModule, 1);                   \
@@ -2209,16 +2214,29 @@ typedef struct {
 static gboolean
 save_to_stream (const gchar  *buffer,
                gsize         count,
-               GCancellable *cancellable,
                GError      **error,
                gpointer      data)
 {
        SaveToStreamData *sdata = (SaveToStreamData *)data;
+        GError *my_error = NULL;
+       gsize n;
 
-       g_output_stream_write (sdata->stream, 
-                              buffer, count, 
-                              sdata->cancellable, 
-                              error);
+       n = g_output_stream_write (sdata->stream, 
+                                   buffer, count, 
+                                   sdata->cancellable, 
+                                   &my_error);
+       if (n != count) {
+               if (!my_error) {
+                        g_set_error (error,
+                                     G_IO_ERROR, 0,
+                                     _("Error writing to image stream"));
+                }
+                else {
+                        g_propagate_error (error, my_error);
+                }
+                return FALSE;
+       }
+       return TRUE;
 }
 
 /**